// 格式化消息时间（用于聊天消息时间）
const formatMsgTime = date => {
  let time
  let d = new Date(date)
  //获取 传入时间 时间戳
  let dd = d.getTime()
  let h = d.getHours()
  let m = d.getMinutes()
  let Y = d.getFullYear()
  let M = d.getMonth() + 1
  let D = d.getDate()

  //现在时间
  let n = new Date()
  let nn = n.getTime()
  let hh = n.getHours()
  let mm = n.getMinutes()
  let YY = n.getFullYear()
  let MM = n.getMonth() + 1
  let DD = n.getDate()

  // 如果是个位数，拼接 0
  h = h < 10 ? '0' + h : h
  m = m < 10 ? '0' + m : m

  // 如果传入的时间，与当前时间的年月日相同，则返回 "时:分"
  if (D == DD && M == MM && Y == YY) {
    time = h + ':' + m
    return time
  } else if (D + 1 == DD && M == MM && Y == YY) {
    // console.log(1);
    // 如果传入的时间，与当前时间的年月相同，日+1等于当前的日，则返回 "昨天 时:分"
    time = '昨天' + ' ' + h + ':' + m
    return time
  } else if (Y == YY) {
    // 如果比昨天还久了，但是是今年，就返回 "06月07日 00:46"
    // ( M D 不能先放在前面进行个位数 0 的拼接，否则会影响前面两个条件的判断 )
    M = M < 10 ? '0' + M : M
    D = D < 10 ? '0' + D : D
    time = M + '月' + D + '日' + ' ' + h + ':' + m
    return time
  } else {
    // 如果不是今年的消息，就返回 "2022年06月07日 00:46"
    M = M < 10 ? '0' + M : M
    D = D < 10 ? '0' + D : D
    time = Y + '年' + M + '月' + D + '日' + ' ' + h + ':' + m
    return time
  }
}

// 格式化好友列表中最后一次消息的时间
const formatLastTime = date => {
  // 当消息为空时，最后一次消息的时间为空，直接返回空即可
  if (!date) return ''
  let time
  let d = new Date(parseInt(date))  // 这个时间必须是数字类型才能转换
  //获取 传入时间 时间戳
  let h = d.getHours()
  let m = d.getMinutes()
  let Y = d.getFullYear()
  let M = d.getMonth() + 1
  let D = d.getDate()

  //现在时间
  let n = new Date()
  let YY = n.getFullYear()
  let MM = n.getMonth() + 1
  let DD = n.getDate()

  // 如果是个位数，拼接 0
  h = h < 10 ? '0' + h : h
  m = m < 10 ? '0' + m : m

  if (D == DD && M == MM && Y == YY) {
    time = h + ':' + m
    return time
  } else if (D + 1 == DD && M == MM && Y == YY) {
    time = '昨天'
    return time
  } else {
    time = `${Y}/${M}/${D}`
    return time
  }
}
// console.log(formatMsgTime(Date.now()));
// console.log(formatMsgTime(Date.now()-1000*60*105));
// console.log(formatMsgTime(1654534007301));
// console.log(formatMsgTime(1624534007301));

const zero = num => {
  return num < 10 ? '0' + num : num
}
// 格式化当前时间（用于首页显示）
const formatNowTime = date => {
  const time = new Date(date)
  const YY = time.getFullYear()
  const MM = zero(time.getMonth() + 1)
  const DD = zero(time.getDate())
  const h = zero(time.getHours())
  const m = zero(time.getMinutes())
  const s = zero(time.getSeconds())
  let week = time.getDay()
  switch (week) {
    case 0:
      week = '星期日'
      break
    case 1:
      week = '星期一'
      break
    case 2:
      week = '星期二'
      break
    case 3:
      week = '星期三'
      break
    case 4:
      week = '星期四'
      break
    case 5:
      week = '星期五'
      break
    case 6:
      week = '星期六'
      break
    default:
      break
  }
  return `${YY}年${MM}月${DD}日 ${h}:${m}:${s} ${week}`
}

const formatNormalData = date => {
  const time = new Date(date)
  const YY = time.getFullYear()
  const MM = zero(time.getMonth() + 1)
  const DD = zero(time.getDate())
  return `${YY}-${MM}-${DD}`
}

export { formatMsgTime, formatLastTime, formatNowTime,formatNormalData }
